package com.silence.gmall.product.assembler;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.silence.gmall.base.TableDataInfo;
import com.silence.gmall.product.domain.entity.BaseTrademark;
import com.silence.gmall.product.dto.BaseTrademarkDto;
import org.mapstruct.Mapper;
import org.mapstruct.MappingConstants;

import java.util.List;

/**
 * @Author silence
 * @Date 2025-08-18 23:11
 * @Email 792245022@qq.com
 * @Version 1.0
 * @Description 品牌工厂
 */
@Mapper(componentModel = MappingConstants.ComponentModel.SPRING)
public interface BaseTrademarkFactory {

    /**
     * 将BaseTrademark转换为BaseTrademarkDto
     *
     * @param source 源对象
     * @return 目标对象
     */
    BaseTrademarkDto trademark2TrademarkDto(BaseTrademark source);

    /**
     * 将BaseTrademark转换为BaseTrademarkDto
     *
     * @param source 源对象
     * @return 目标对象
     */
    List<BaseTrademarkDto> trademarkList2TrademarkDtoList(List<BaseTrademark> source);

    /**
     * 将Page<BaseTrademark>转换为TableDataInfo<BaseTrademarkResVo>
     *
     * @param source 源对象
     * @return 目标对象
     */
    TableDataInfo<BaseTrademarkDto> pageTrademark2TableTrademarkDto(Page<BaseTrademark> source);

    /**
     * 将BaseTrademarkDto转换为BaseTrademark
     *
     * @param source 源对象
     * @return 目标对象
     */
    BaseTrademark trademarkDto2Trademark(BaseTrademarkDto source);
}
